import { ElMessage } from "element-plus";
import router from "./router";
import { useUserStore } from "./stores/user";
//接收路由

// 路由白名单
const WHITE_LIST = ["/login", "/404"];

// 如果是组件，优先用这种。
// import { useUserStore } from "./store/modules/user";
// const userStore = useUserStore();


// 如果是非组件，router直接导入。因为在路由中已经导出了。
// 路由导航守卫,路由拦截
/*
beforeEach  是一个全局的钩子函数，它在每个测试用例运行之前执行的钩子函数
beforeEach(() => {
  此处可以添加代码以执行一些初始化设置或清理操作
});*/ 
router.beforeEach((to, from, next) => {
    // 先拿到token，token在useUserStore中。什么时候用什么时候拿，写在外面，打包的时候因为顺序问题，拿不到。一点要在里面
    const store = useUserStore();
// 判断是否有token，如果有，就放行，如果没有，就判断是否在白名单中，如果在，就放行，如果不在，就跳转到登录页
  if (store.token) {
    // 如果有token，就放行
    next();
  } else {
    // 如果没有token，就判断是否在白名单中
    if (WHITE_LIST.includes(to.path)) {
      // 如果在白名单中，就放行
      next();
    } else {
      // 如果不在白名单中，就跳转到登录页
     ElMessage.warning("请先登录");
      next("/login");
    }
  }
});
